Subject: MC
Envivo Bio, Inc.; Confidential
Figure 1 is an interactive figure showing the microbial community
composition in each collected sample. Here, each color and shade
corresponds to a different genus. For reference, domestic dogs
(Canis familiaris) and gray wolves (Canis lupus) are
different species that belong to the same genus (Canis).
You can interact with this figure by:
- Hovering the cursor over a color in the stacked bar to see the
taxonomic identity, sample type, and relative abundance corresponding to
that color and bar
- Clicking and dragging the cursor over a portion of the figure to
zoom
- Single-clicking a genus’s name in the legend to remove that genus
from the figure
- Double-clicking (very quickly) a genus’s name in the legend
to only show that genus
Figure 1: Microbial community composition of
collected saliva, stool, and CapScan samples. CapScan samples are
ordered from proximal to distal intestine (i.e.,
increasing distance from mouth). Taxonomic composition is reported at
the genus rank. Genera present at <1% relative abundance across all
samples are reported as “Other genera”. Note: Blue =
Firmicutes; Yellow = Actinomycetes; Green =
Bacteroidetes; Red = Proteobacteria; Purple = all
other phyla. Shades of the same color (except purple) correspond to
different genera from the same phylum.
Figure 2 is an interactive figure showing the microbial community
composition at higher taxononomic resolution. Here, each row corresponds
to a unique microbe.
You can interact with this figure by:
- Hovering the cursor over a cell to see that microbe’s genus and
species (and strain when available), relative abundance, and full
taxonomic classification
- Clicking and dragging the cursor over a portion of the figure to
zoom
Figure 2: Heat map showing relative abundance of
microbes in each sample (N = 230 total identified). Each row corresponds
to a unique microbe and each column corresponds to an individual sample.
Note the relative abundance colorscale is in log units.
1.3 Notable microbe detected
- Dialister hominis:
- Consumes succinate (Sakamoto et al., 2020), which is
elevated in patients with obesity and type 2 diabetes; proposed as a
candidate probiotic for regulating circulating succinate levels
(Huber-Ruano et al., 2022)
- Composes 20% of the microbial community in the proximal CapScan
sample
- Note: Dialister massiliensis found at nearly
identical relative abundances, but little is currently known about this
microbe
1.4 References
Huber-Ruano, I., Calvo, E., Mayneris-Perxachs, J., Rodríguez-Peña,
M.M., Ceperuelo-Mallafré, V., Cedó, L., et al. (2022) Orally
administered Odoribacter laneus improves glucose control and
inflammatory profile in obese mice by depleting circulating succinate.
Microbiome 10: 135.
Sakamoto, M., Ikeyama, N., Toyoda, A., Murakami, T., Mori, H., Iino,
T., and Ohkuma, M. (2020) Dialister hominis sp. nov., isolated
from human faeces. Int J Syst Evol Microbiol 70: 589–595.
LS0tCnRpdGxlOiAiPGJyPiBUYXhvbm9taWMgcHJvZmlsaW5nIG9mIGJhY3RlcmlhbCBhbmQgYXJjaGFlYWwgY29tbXVuaXRpZXMgZnJvbSBzYWxpdmEsIHN0b29sLCBhbmQgQ2FwU2Nhbi1zYW1wbGVkIGd1dCBtZXRhZ2Vub21lcyIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAotLS0KCi0tLQoKPHN0eWxlPgpkaXYuaGlnaGxpZ2h0IHsKYmFja2dyb3VuZC1jb2xvcjogI0YyRjJGMjsKcGFkZGluZzogMHB4Owpib3JkZXItcmFkaXVzOiAycHg7Cn0KCjwvc3R5bGU+CgojIyMgPGI+PGk+U3ViamVjdDogTUM8L2I+PC9pPgoqRW52aXZvIEJpbywgSW5jLjsgQ29uZmlkZW50aWFsKgoKYGBge3Igc2V0dXAsIGluY2x1ZGUgPSBGQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQpgYGAKCmBgYHtyIGFkZCBsb2dvLCBlY2hvID0gRkFMU0V9CmxvZ29fcGF0aCA8LSAiLi4vbG9nby9lbnZpdm8uc3ZnIgoKaHRtbHRvb2xzOjppbWcoc3JjID0ga25pdHI6OmltYWdlX3VyaShsb2dvX3BhdGgpLCAKICAgICAgICAgICAgICAgYWx0ID0gImxvZ28iLCAKICAgICAgICAgICAgICAgc3R5bGUgPSAicG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyByaWdodDowOyBwYWRkaW5nOjEwcHg7IHdpZHRoOiAxNDVweDsgaGVpZ2h0OiA0MnB4IikKYGBgCgpgYGB7ciBsb2FkIHBhY2thZ2VzLCBpbmNsdWRlID0gRkFMU0V9CiMgTGlzdCByZXF1aXJlZCBwYWNrYWdlcwpjcmFuUGFja2FnZXMgPC0gYygiQmlvY01hbmFnZXIiLCAiZ2dwbG90MiIsICJkcGx5ciIsICJ0aWR5ciIsCiAgICAgICAgICAgICAgICAgICJhcGUiLCAiZ2dwbG90MiIsICJyZXNoYXBlMiIsICJwbG90bHkiLCAiaGVhdG1hcGx5IikKYmlvY1BhY2thZ2VzIDwtIGMoInBoeWxvc2VxIiwgIkJpb3N0cmluZ3MiKQoKIyBJbnN0YWxsIG1pc3NpbmcgQ1JBTiBwYWNrYWdlcwppbnN0YWxsZWRDUkFOIDwtIGNyYW5QYWNrYWdlcyAlaW4lIHJvd25hbWVzKGluc3RhbGxlZC5wYWNrYWdlcygpKQppZiAoYW55KGluc3RhbGxlZENSQU4gPT0gRkFMU0UpKSB7CiAgaW5zdGFsbC5wYWNrYWdlcyhjcmFuUGFja2FnZXNbIWluc3RhbGxlZENSQU5dLAogICAgICAgICAgICAgICAgICAgcmVwb3MgPSAnaHR0cDovL2NyYW4udXMuci1wcm9qZWN0Lm9yZycpCn0KCiMgSW5zdGFsbCBtaXNzaW5nIEJpb2NvbmR1Y3RvciBwYWNrYWdlcwppbnN0YWxsZWRCaW9jIDwtIGJpb2NQYWNrYWdlcyAlaW4lIHJvd25hbWVzKGluc3RhbGxlZC5wYWNrYWdlcygpKQppZiAoYW55KGluc3RhbGxlZEJpb2MgPT0gRkFMU0UpKSB7CiAgQmlvY01hbmFnZXI6Omluc3RhbGwoYmlvY1BhY2thZ2VzWyFpbnN0YWxsZWRCaW9jXSkKfQoKIyBMb2FkIHBhY2thZ2VzCmxhcHBseShjKGNyYW5QYWNrYWdlcywgYmlvY1BhY2thZ2VzKSwgbGlicmFyeSwgY2hhcmFjdGVyLm9ubHkgPSBUUlVFKQpgYGAKCmBgYHtyIGxvYWQgZGF0YSwgaW5jbHVkZSA9IEZBTFNFfQojIExvYWQgQ29zbW9zSUQgZGF0YSBhbmQgZm9ybWF0dGVkIG1ldGFkYXRhCmNvc21vcyA8LSByZWFkLmNzdihmaWxlID0gIi4uL2RhdGEvQ1AwNDYxOF9jb3Ntb3NpZF8yMDIyMDkwNi5jc3YiKQptZXRhIDwtIHJlYWQuY3N2KGZpbGUgPSAiLi4vZGF0YS9DUDA0NjE4X21ldGFkYXRhLmNzdiIpCmBgYAoKYGBge3IgZm9ybWF0IGRhdGEsIGluY2x1ZGUgPSBGQUxTRX0KIyBQcmVwYXJlIHRheF90YWJsZSBhbmQgb3R1X3RhYmxlIG9iamVjdHMKdGF4IDwtIGNvc21vcyAlPiUKICBzZWxlY3QoUGh5bHVtLCBDbGFzcywgT3JkZXIsIEZhbWlseSwgR2VudXMsIFNwZWNpZXMsIFN0cmFpbikgJT4lCiAgYXMubWF0cml4ICU+JQogIHRheF90YWJsZQoKc3RhcnRfaW5kIDwtIGdyZXAoIlN0cmFpbiIsIGNvbG5hbWVzKGNvc21vcykpKzEKc3RvcF9pbmQgPC0gbmNvbChjb3Ntb3MpLTIKYWJ1bmRhbmNlX3Njb3JlcyA8LSBjb3Ntb3NbLHN0YXJ0X2luZDpzdG9wX2luZF0gJT4lIG90dV90YWJsZSguLCB0YXhhX2FyZV9yb3dzID0gVFJVRSkKCiMgUmVmb3JtYXQgc2FtcGxlIG5hbWVzIGFuZCBtZXRhZGF0YSBzYW1wbGUgbmFtZXMgc28gdGhleSBtYXRjaApjb2xuYW1lcyhhYnVuZGFuY2Vfc2NvcmVzKSA8LSBjb2xuYW1lcyhhYnVuZGFuY2Vfc2NvcmVzKSAlPiUKICBnc3ViKCJYIiwgIiIsIC4pICU+JQogIGdzdWIoIl8uKiIsICIiLCAuKSAlPiUKICBwYXN0ZTAoIkVCXyIsIC4pCgpyb3cubmFtZXMobWV0YSkgPC0gbWV0YSAlPiUKICBwdWxsKFNhbXBsZV9udW1iZXIpICU+JQogIHBhc3RlMCgiRUJfIiwgLikKCnNhbV9kYXRhIDwtIHNhbXBsZV9kYXRhKG1ldGEpCmBgYAoKYGBge3IgYnVpbGQgcGh5bG9zZXEsIGluY2x1ZGUgPSBGQUxTRX0KIyBCdWlsZCBwaHlsb3NlcSBvYmplY3QKcHMgPC0gcGh5bG9zZXEodGF4LCBhYnVuZGFuY2Vfc2NvcmVzLCBzYW1fZGF0YSkKYGBgCgpgYGB7ciB0cmFuc2Zvcm0gZGF0YSwgaW5jbHVkZSA9IEZBTFNFfQojIExvZyB0cmFuc2Zvcm0KcHNMb2cgPC0gcHMgJT4lIHRyYW5zZm9ybV9zYW1wbGVfY291bnRzKC4sIGZ1bmN0aW9uKHgpIGxvZyh4ICsgMSwgYmFzZSA9IDEwKSkKCiMgUmVsYXRpdmUgYWJ1bmRhbmNlIHRyYW5zZm9ybQpwc1JBIDwtIHBzICU+JSB0cmFuc2Zvcm1fc2FtcGxlX2NvdW50cyguLCBmdW5jdGlvbih4KSB4L3N1bSh4KSoxMDApCmBgYAoKYGBge3IgcmFuayBwaHlsYSwgaW5jbHVkZSA9IEZBTFNFfQpwaHlfcmFuayA8LSBwc1JBICU+JQogIHRheF9nbG9tKC4sIHRheHJhbmsgPSAiUGh5bHVtIikgJT4lCiAgcHNtZWx0ICU+JQogIGdyb3VwX2J5KFBoeWx1bSkgJT4lCiAgc3VtbWFyaXNlKG1lZGlhbiA9IG1lZGlhbihBYnVuZGFuY2UpKQoKcGh5X3JhbmsgJT4lIGFycmFuZ2UoZGVzYyhtZWRpYW4pKQpgYGAKCmBgYHtyIHN1YmplY3Qgc3Vic2V0LCBpbmNsdWRlID0gRkFMU0V9CiMgU2V0IHN1YmplY3QKc3ViamVjdCA8LSAiTUMiCgojIFN1YnNldCB0byBzdWJqZWN0IHNhbXBsZXMgYW5kIGRyb3AgbWlzc2luZyB0YXhhCnBzU3ViIDwtIHN1YnNldF9zYW1wbGVzKHBzLCBTdWJqZWN0ID09IHN1YmplY3QpICU+JQogIHBydW5lX3RheGEodGF4YV9zdW1zKC4pID4gMCwgLikKCiMgQWRkIHBsb3QgbGFiZWwgZm9yIGVhY2ggc2FtcGxlCnNhbXBsZV9kYXRhKHBzU3ViKSRQbG90X2xhYmVsIDwtIHBhc3RlMChzYW1wbGVfbmFtZXMocHNTdWIpLCAiICgiLCBzYW1wbGVfZGF0YShwc1N1YikkU2FtcGxlX3R5cGUsICIpIikKCiMgUmVsYXRpdmUgYWJ1bmRhbmNlIHRyYW5zZm9ybQpwc1N1Yl9yYSA8LSBwc1N1YiAlPiUgdHJhbnNmb3JtX3NhbXBsZV9jb3VudHMoLiwgZnVuY3Rpb24oeCkgeC9zdW0oeCkqMTAwKQpgYGAKCmBgYHtyIHBsb3QgYmFyLCBpbmNsdWRlID0gRkFMU0V9CiMgRGVmaW5lIE5PVCBJTiBvcGVyYXRvcgonJSFpbiUnIDwtIGZ1bmN0aW9uKHgseSkhKCclaW4lJyh4LHkpKQoKIyBBZ2dsb21lcmF0ZSBhdCBHZW51cyBhbmQgbWVsdAp0YXhyYW5rIDwtICJHZW51cyIKbWVsdCA8LSBwc1N1Yl9yYSAlPiUgdGF4X2dsb20oLiwgdGF4cmFuayA9IHRheHJhbmspICU+JSBwc21lbHQKCiMgRGVmaW5lIG1ham9yIHBoeWxhCm1ham9yX3BoeSA8LSBjKCJGaXJtaWN1dGVzIiwgIkFjdGlub2JhY3RlcmlhIiwgIkJhY3Rlcm9pZGV0ZXMiLCAiUHJvdGVvYmFjdGVyaWEiKQoKIyBJZGVudGlmeSBnZW5lcmEgcHJlc2VudCBpbiA8MSUgcmVsYXRpdmUgYWJ1bmRhbmNlIGluIGFsbCBzYW1wbGVzCnJhcmVfZ2VuZXJhIDwtIG1lbHQgJT4lCiAgZ3JvdXBfYnkoU2FtcGxlX251bWJlciwgR2VudXMpICU+JQogIHN1bW1hcml6ZShzdW0gPSBzdW0oQWJ1bmRhbmNlKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIGdyb3VwX2J5KEdlbnVzKSAlPiUKICBzdW1tYXJpemUobWF4ID0gbWF4KHN1bSkpICU+JQogIGZpbHRlcihtYXggPCAxKSAlPiUKICBwdWxsKEdlbnVzKQoKIyBDcmVhdGUgbmV3IGNvbHVtbiBjb250YWluaW5nIG5hbWUgb2YgZ2VudXMgaWYgYWJvdmUgY3V0b2ZmIG9yICJPdGhlciBnZW5lcmEiIGlmIG5vdApkZiA8LSBtZWx0ICU+JQogIG11dGF0ZShQaHlfZ3JvdXAgPSBjYXNlX3doZW4oUGh5bHVtICUhaW4lIG1ham9yX3BoeSB+ICJPdGhlciBwaHlsdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IFBoeWx1bSksCiAgICAgICAgIFBoeV9ncm91cCA9IGNhc2Vfd2hlbihHZW51cyAlaW4lIHJhcmVfZ2VuZXJhIH4gIk90aGVyIHBoeWx1bSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gUGh5X2dyb3VwKSwKICAgICAgICAgVGF4X2xhYmVsID0gY2FzZV93aGVuKEdlbnVzICVpbiUgcmFyZV9nZW5lcmEgfiAiQWFPdGhlciBnZW5lcmEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IEdlbnVzKSkgJT4lCiAgZ3JvdXBfYnkoU3ViamVjdCkgJT4lCiAgYXJyYW5nZShTdWJqZWN0LCBTYW1wbGVfdHlwZSkKCiMgRGVmaW5lIG9yZGVyCnBoeV9vcmRlciA8LSBjKCJPdGhlciBwaHlsdW0iLAogICAgICAgICAgICAgICAiUHJvdGVvYmFjdGVyaWEiLAogICAgICAgICAgICAgICAiQmFjdGVyb2lkZXRlcyIsCiAgICAgICAgICAgICAgICJBY3Rpbm9iYWN0ZXJpYSIsCiAgICAgICAgICAgICAgICJGaXJtaWN1dGVzIikgJT4lIHJldgoKZ2VuX29yZGVyIDwtIGRmICU+JQogIHNlbGVjdChQaHlfZ3JvdXAsIFRheF9sYWJlbCkgJT4lCiAgbXV0YXRlKE9yZGVyID0gbWF0Y2goUGh5X2dyb3VwLCBwaHlfb3JkZXIpKSAlPiUKICBhcnJhbmdlKE9yZGVyLCBkZXNjKFRheF9sYWJlbCkpICU+JQogIGRpc3RpbmN0ICU+JQogIHB1bGwoVGF4X2xhYmVsKQoKZ2VuX29yZGVyIDwtIGZhY3Rvcihnc3ViKCJeQWEiLCAiIiwgZ2VuX29yZGVyKSwgbGV2ZWxzID0gZ3N1YigiXkFhIiwgIiIsIGdlbl9vcmRlcikpICMgdGhlIEFhIGlzIHRvIG1ha2Ugc3VyZSAiT3RoZXIiIGlzIHBsb3R0ZWQgYXQgdGhlIHRvcAoKZGYgPC0gZGYgJT4lCiAgbXV0YXRlKFRheF9sYWJlbCA9IGZhY3Rvcihnc3ViKCJeQWEiLCAiIiwgVGF4X2xhYmVsKSwgbGV2ZWxzID0gZ2VuX29yZGVyKSkKCiMgRGVmaW5lIGNvbG9ycwpwaHlfY29sb3IgPC0gZGF0YS5mcmFtZShQaHlsdW0gPSBjKCJBY3Rpbm9iYWN0ZXJpYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIHBoeWx1bSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhY3Rlcm9pZGV0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaXJtaWN1dGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJvdGVvYmFjdGVyaWEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZV9jb2xvciA9IGMoIiNGRkI3MjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIzgzMkNGRiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjNjRDNjJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiMwNzJBQzgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiI0U5M0I0RiIpKQoKcGh5X2NvbG9yIDwtIHBoeV9jb2xvclttYXRjaChwaHlfb3JkZXIsIHBoeV9jb2xvciRQaHlsdW0pLF0KCiMgRGF0YSBmcmFtZSBhcyBpbnB1dCwgZGF0YSBmcmFtZSB3aXRoIG5ldyBjb2x1bW4gb2YgaGV4IGNvZGVzIGFzIG91dHB1dApjb2xfcGFsZXR0ZSA8LSBkZiAlPiUKICBzZWxlY3QoUGh5X2dyb3VwLCBUYXhfbGFiZWwpICU+JQogIGRpc3RpbmN0ICU+JQogIG11dGF0ZShIZXhfY29kZSA9IE5BKQoKCmZvcihwaHkgaW4gcGh5X2NvbG9yJFBoeWx1bSkgewogIHRlc3QgPC0gY29sX3BhbGV0dGUgJT4lCiAgICBmaWx0ZXIoUGh5X2dyb3VwID09IHBoeSkgJT4lCiAgICBwdWxsKFRheF9sYWJlbCkgJT4lCiAgICBkcm9wbGV2ZWxzICU+JQogICAgbGV2ZWxzCiAgCiAgdGF4LmNvbG9yIDwtIGNvbG9yUmFtcFBhbGV0dGUoYyhwaHlfY29sb3IkQmFzZV9jb2xvclttYXRjaChwaHksIHBoeV9jb2xvciRQaHlsdW0pXSwgIndoaXRlIikpCiAgY29sdGVzdCA8LSB0YXguY29sb3IobGVuZ3RoKHRlc3QpKzIpICU+JQogICAgLlstbGVuZ3RoKC4pXQogIGNvbF9wYWxldHRlJEhleF9jb2RlW21hdGNoKHRlc3QsIGNvbF9wYWxldHRlJFRheF9sYWJlbCldIDwtIGNvbHRlc3QKfQoKY29sX3BhbGV0dGUgPC0gY29sX3BhbGV0dGUgJT4lIGFycmFuZ2UoZmFjdG9yKFRheF9sYWJlbCwgbGV2ZWxzID0gZ2VuX29yZGVyKSkKYGBgCgo8ZGl2IGNsYXNzPSJoaWdobGlnaHQiPgojIyMgMS4xIE92ZXJ2aWV3IG9mIG1pY3JvYmlhbCBjb21tdW5pdHkgY29tcG9zaXRpb24KPC9kaXY+CgpGaWd1cmUgMSBpcyBhbiBpbnRlcmFjdGl2ZSBmaWd1cmUgc2hvd2luZyB0aGUgbWljcm9iaWFsIGNvbW11bml0eSBjb21wb3NpdGlvbiBpbiBlYWNoIGNvbGxlY3RlZCBzYW1wbGUuIEhlcmUsIGVhY2ggY29sb3IgYW5kIHNoYWRlIGNvcnJlc3BvbmRzIHRvIGEgZGlmZmVyZW50IGdlbnVzLiBGb3IgcmVmZXJlbmNlLCBkb21lc3RpYyBkb2dzICgqQ2FuaXMgZmFtaWxpYXJpcyopIGFuZCBncmF5IHdvbHZlcyAoKkNhbmlzIGx1cHVzKikgYXJlIGRpZmZlcmVudCBzcGVjaWVzIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIGdlbnVzICgqQ2FuaXMqKS4KPGJyPjxicj4KWW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoaXMgZmlndXJlIGJ5OgoKKiBIb3ZlcmluZyB0aGUgY3Vyc29yIG92ZXIgYSBjb2xvciBpbiB0aGUgc3RhY2tlZCBiYXIgdG8gc2VlIHRoZSB0YXhvbm9taWMgaWRlbnRpdHksIHNhbXBsZSB0eXBlLCBhbmQgcmVsYXRpdmUgYWJ1bmRhbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhhdCBjb2xvciBhbmQgYmFyCiogQ2xpY2tpbmcgYW5kIGRyYWdnaW5nIHRoZSBjdXJzb3Igb3ZlciBhIHBvcnRpb24gb2YgdGhlIGZpZ3VyZSB0byB6b29tCiogU2luZ2xlLWNsaWNraW5nIGEgZ2VudXMncyBuYW1lIGluIHRoZSBsZWdlbmQgdG8gcmVtb3ZlIHRoYXQgZ2VudXMgZnJvbSB0aGUgZmlndXJlCiogRG91YmxlLWNsaWNraW5nICg8dT52ZXJ5IHF1aWNrbHk8L3U+KSBhIGdlbnVzJ3MgbmFtZSBpbiB0aGUgbGVnZW5kIHRvIG9ubHkgc2hvdyB0aGF0IGdlbnVzCmBgYHtyLCBvdXQud2lkdGggPSAiMTAwJSIsIGVjaG8gPSBGQUxTRX0KIyBQbG90CnBCYXIgPC0gcGxvdF9seShkZiwgeCA9IH5QbG90X2xhYmVsLCB5ID0gfkFidW5kYW5jZSwgdHlwZSA9ICJiYXIiLAogICAgICAgICAgICAgY29sb3IgPSB+VGF4X2xhYmVsLCBjb2xvcnMgPSBjb2xfcGFsZXR0ZSRIZXhfY29kZSwKICAgICAgICAgICAgIHRleHRwb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgICAgIHRleHQgPSB+cGFzdGUoIjxiPkdlbnVzOjwvYj4iLCBUYXhfbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICI8YnI+PGJyPiIsICI8Yj5TYW1wbGUgdHlwZTo8L2I+IiwgU2FtcGxlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICI8YnI+IiwgIjxiPlJlbGF0aXZlIGFidW5kYW5jZTo8L2I+IiwgcGFzdGUwKHJvdW5kKEFidW5kYW5jZSwgZGlnaXRzID0gMSksICIlIikpLAogICAgICAgICAgICAgaG92ZXJpbmZvID0gInRleHQiKSAlPiUKICBsYXlvdXQoeGF4aXMgPSBsaXN0KHRpdGxlID0gIjxiPlNhbXBsZTwvYj4iLAogICAgICAgICAgICAgICAgICAgICAgdGlja3MgPSAib3V0c2lkZSIpLAogICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiPGI+UmVsYXRpdmUgYWJ1bmRhbmNlICglKTwvYj4iLAogICAgICAgICAgICAgICAgICAgICAgdGlja3MgPSAib3V0c2lkZSIpLAogICAgICAgICBiYXJtb2RlID0gInN0YWNrIiwKICAgICAgICAgZm9udCA9IGxpc3QoZmFtaWx5ID0gIkFyaWFsIikpCgpwQmFyJHgkbGF5b3V0JHlheGlzJGxpbmVjb2xvciA8LSAiIzAwMDAwMCIKcEJhcgpgYGAKKipGaWd1cmUgMToqKiBNaWNyb2JpYWwgY29tbXVuaXR5IGNvbXBvc2l0aW9uIG9mIGNvbGxlY3RlZCBzYWxpdmEsIHN0b29sLCBhbmQgQ2FwU2NhbiBzYW1wbGVzLiBDYXBTY2FuIHNhbXBsZXMgYXJlIG9yZGVyZWQgZnJvbSBwcm94aW1hbCB0byBkaXN0YWwgaW50ZXN0aW5lICgqaSouKmUqLiwgaW5jcmVhc2luZyBkaXN0YW5jZSBmcm9tIG1vdXRoKS4gVGF4b25vbWljIGNvbXBvc2l0aW9uIGlzIHJlcG9ydGVkIGF0IHRoZSBnZW51cyByYW5rLiBHZW5lcmEgcHJlc2VudCBhdCA8MSUgcmVsYXRpdmUgYWJ1bmRhbmNlIGFjcm9zcyBhbGwgc2FtcGxlcyBhcmUgcmVwb3J0ZWQgYXMgIk90aGVyIGdlbmVyYSIuIDx1Pk5vdGU6PC91PiBCbHVlID0gKkZpcm1pY3V0ZXMqOyBZZWxsb3cgPSAqQWN0aW5vbXljZXRlcyo7IEdyZWVuID0gKkJhY3Rlcm9pZGV0ZXMqOyBSZWQgPSAqUHJvdGVvYmFjdGVyaWEqOyBQdXJwbGUgPSBhbGwgb3RoZXIgcGh5bGEuIFNoYWRlcyBvZiB0aGUgc2FtZSBjb2xvciAoZXhjZXB0IHB1cnBsZSkgY29ycmVzcG9uZCB0byBkaWZmZXJlbnQgZ2VuZXJhIGZyb20gdGhlIHNhbWUgcGh5bHVtLgoKYGBge3IsIGluY2x1ZGUgPSBGQUxTRX0KIyBPcmRpbmF0aW9uLWJhc2VkCnBIZWF0X29yZCA8LSBwbG90X2hlYXRtYXAocHNTdWJfcmEsIG1ldGhvZCA9ICJOTURTIiwgZGlzdGFuY2UgPSAiYnJheSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YS5sYWJlbCA9ICJTdHJhaW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgIG1heC5sYWJlbCA9IDMwMCkKCiMgUmV0cmlldmUgcm93IGFuZCB0YXhvbiBvcmRlcnMKcm93X29yZGVyIDwtIHBIZWF0X29yZCRwbG90X2VudiR0YXhhLm9yZGVyICU+JSByZXYKdGF4X29yZGVyIDwtIHRheF90YWJsZShwc1N1Yl9yYSlbbWF0Y2gocm93X29yZGVyLCByb3duYW1lcyh0YXhfdGFibGUocHNTdWJfcmEpKSksXSAlPiUKICBhcy5kYXRhLmZyYW1lICU+JQogIG11dGF0ZSh0YXhvbiA9IHJvd25hbWVzKC4pLAogICAgICAgICBBYnVuZGFuY2UgPSAxLAogICAgICAgICBTYW1wbGUgPSBzdWJqZWN0KQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CiMgUHJlcGFyZSBkYXRhCnggPC0gcHNTdWJfcmEgJT4lIG90dV90YWJsZSAlPiUgYXMuZGF0YS5mcmFtZQpjb2xuYW1lcyh4KSA8LSBsYXBwbHkoY29sbmFtZXMoeCksIGdyZXAsIHNhbXBsZV9kYXRhKHBzU3ViX3JhKSRQbG90X2xhYmVsLCB2YWx1ZSA9IFRSVUUpICU+JSB1bmxpc3QKCiMgQWRkIHRheG9ub215CnggPC0gY2JpbmQoeCwgdGF4X3RhYmxlKHBzU3ViX3JhKSkKCiMgUmVvcmRlciByb3dzIGFuZCBjb2x1bW5zIHRvIG1hdGNoIG9yZGluYXRpb24KeCA8LSB4W21hdGNoKHJvd19vcmRlciwgcm93bmFtZXMoeCkpLF0KCiMgU2V0IGhvdmVydGV4dApuc2FtcCA8LSBuc2FtcGxlcyhwc1N1Yl9yYSkKaG92ZXJfc3RyYWluIDwtIHhbLCAxOm5zYW1wXQpob3Zlcl9zdHJhaW5bXSA8LSBwYXN0ZTAoIjxiPk1pY3JvYmU6PC9iPiAiLCB4JFN0cmFpbiwgIlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICI8Yj5SZWxhdGl2ZSBhYnVuZGFuY2U6PC9iPiAiKQpob3Zlcl9zdHJhaW4gPC0gYXMubWF0cml4KGhvdmVyX3N0cmFpbikKCmhvdmVyX2FidW5kIDwtIHhbLCAxOm5zYW1wXSAlPiUgcm91bmQoLiwgZGlnaXRzID0gMikgJT4lIGFzLmRhdGEuZnJhbWUKaG92ZXJfYWJ1bmQgPC0gYXBwbHkoaG92ZXJfYWJ1bmQsIDIsIHBhc3RlMCwgIiUiKQpob3Zlcl9hYnVuZCA8LSBhcy5tYXRyaXgoaG92ZXJfYWJ1bmQpCgpob3Zlcl90YXggPC0geFssIDE6bnNhbXBdCmhvdmVyX3RheFtdIDwtIHBhc3RlMCgiXG4gXG48Yj5QaHlsdW06PC9iPiAiLCB4JFBoeWx1bSwgIlxuIiwKICAgICAgICAgICAgICAgICAgICI8Yj5DbGFzczo8L2I+ICIsIHgkQ2xhc3MsICJcbiIsCiAgICAgICAgICAgICAgICAgICAiPGI+T3JkZXI6PC9iPiAiLCB4JE9yZGVyLCAiXG4iLAogICAgICAgICAgICAgICAgICAgIjxiPkZhbWlseTo8L2I+ICIsIHgkRmFtaWx5LCAiXG4iLAogICAgICAgICAgICAgICAgICAgIjxiPkdlbnVzOjwvYj4gIiwgeCRHZW51cywgIlxuIikKaG92ZXJfdGF4IDwtIGFzLm1hdHJpeChob3Zlcl90YXgpCgpob3ZlcnRleHQgPC0gbWF0cml4KHBhc3RlMChob3Zlcl9zdHJhaW4sIGhvdmVyX2FidW5kLCBob3Zlcl90YXgpLAogICAgICAgICAgICAgICAgbnJvdyA9IG5yb3coaG92ZXJfdGF4KSwgbmNvbCA9IG5jb2woaG92ZXJfdGF4KSkKCiMgUGVyZm9ybSBsb2cxMCB0cmFuc2Zvcm1hdGlvbiBvbiByZWxhdGl2ZSBhYnVuZGFuY2VzCmRhdGEgPC0gbG9nKHhbLCAxOm5zYW1wXSwgYmFzZSA9IDEwKQpkYXRhW3NhcHBseShkYXRhLCBpcy5pbmZpbml0ZSldIDwtIE5BCmBgYAo8YnI+PGJyPgoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuMiBIaWdoLXJlc29sdXRpb24gc25hcHNob3Qgb2YgY29tbXVuaXR5IGNvbXBvc2l0aW9uCjwvZGl2PgpGaWd1cmUgMiBpcyBhbiBpbnRlcmFjdGl2ZSBmaWd1cmUgc2hvd2luZyB0aGUgbWljcm9iaWFsIGNvbW11bml0eSBjb21wb3NpdGlvbiBhdCBoaWdoZXIgdGF4b25vbm9taWMgcmVzb2x1dGlvbi4gSGVyZSwgZWFjaCByb3cgY29ycmVzcG9uZHMgdG8gYSB1bmlxdWUgbWljcm9iZS4KPGJyPjxicj4KWW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoaXMgZmlndXJlIGJ5OgoKKiBIb3ZlcmluZyB0aGUgY3Vyc29yIG92ZXIgYSBjZWxsIHRvIHNlZSB0aGF0IG1pY3JvYmUncyBnZW51cyBhbmQgc3BlY2llcyAoYW5kIHN0cmFpbiB3aGVuIGF2YWlsYWJsZSksIHJlbGF0aXZlIGFidW5kYW5jZSwgYW5kIGZ1bGwgdGF4b25vbWljIGNsYXNzaWZpY2F0aW9uCiogQ2xpY2tpbmcgYW5kIGRyYWdnaW5nIHRoZSBjdXJzb3Igb3ZlciBhIHBvcnRpb24gb2YgdGhlIGZpZ3VyZSB0byB6b29tCgo8YnI+PGJyPgpgYGB7ciwgb3V0LmhlaWdodCA9ICI3NTBweCIsIGVjaG8gPSBGQUxTRX0KIyBTZXQgc2FtcGxlIG5hbWVzCiNjb2xuYW1lcyhkYXRhKSA8LSBjKCJFQl8yNjkgKHNhbGl2YSkiLCAiRUJfMjcwIChDYXBTY2FuKSIsICJFQl8yNzEgKENhcFNjYW4pIiwKIyAgICAgICAgICAgICAgICAgICAgIkVCXzI3MiAoQ2FwU2NhbikiLCAiRUJfMjczIChDYXBTY2FuKSIsICJFQl8yNzQgKHN0b29sKSIpCgojIFByZXBhcmUgdGF4b25vbXkgcm93IHNpZGUKcm93X3NpZGUgPC0geCAlPiUgc2VsZWN0KFBoeWx1bSkKcm93X3NpZGUkUGh5bHVtW3Jvd19zaWRlJFBoeWx1bSAlIWluJSBtYWpvcl9waHldIDwtICJPdGhlciBwaHlsYSIKcm93X3NpZGUkUGh5bHVtIDwtIGZhY3Rvcihyb3dfc2lkZSRQaHlsdW0sIGxldmVscyA9IGMoIk90aGVyIHBoeWxhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3Rlb2JhY3RlcmlhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhY3Rlcm9pZGV0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0aW5vYmFjdGVyaWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlybWljdXRlcyIpKQoKIyBQbG90CnBIZWF0IDwtIGhlYXRtYXBseShkYXRhLAogICAgICAgICAgICAgICAgICAgUm93diA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgQ29sdiA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgY29sb3JzID0gdmlyaWRpczo6dmlyaWRpcygxMCksCiAgICAgICAgICAgICAgICAgICByb3dfc2lkZV9jb2xvcnMgPSByb3dfc2lkZSwKICAgICAgICAgICAgICAgICAgIHJvd19zaWRlX3BhbGV0dGUgPSBjKCJBY3Rpbm9iYWN0ZXJpYSIgPSAiI0ZGQjcyNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmFjdGVyb2lkZXRlcyIgPSAiIzY0QzYyQSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlybWljdXRlcyIgPSAiIzA3MkFDOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJvdGVvYmFjdGVyaWEiID0gIiNFOTNCNEYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIHBoeWxhIiA9ICIjODMyQ0ZGIiksCiAgICAgICAgICAgICAgICAgICBzdWJwbG90X21hcmdpbiA9IDAuMDEsCiAgICAgICAgICAgICAgICAgICBzdWJwbG90X3dpZHRocyA9IGMoMC45LCAwLjA3KSwKICAgICAgICAgICAgICAgICAgIHNpZGVfY29sb3JfY29sb3JiYXJfbGVuID0gMC4zLAogICAgICAgICAgICAgICAgICAgcGxvdF9tZXRob2QgPSAicGxvdGx5IiwKICAgICAgICAgICAgICAgICAgIGN1c3RvbV9ob3ZlcnRleHQgPSBob3ZlcnRleHQsCiAgICAgICAgICAgICAgICAgICB4bGFiID0gIjxiPlNhbXBsZTwvYj4iLAogICAgICAgICAgICAgICAgICAgeWxhYiA9ICI8Yj5NaWNyb2JlPC9iPiIsCiAgICAgICAgICAgICAgICAgICBjb2xvcmJhcl94cG9zID0gMS4wMTksCiAgICAgICAgICAgICAgICAgICBjb2xvcmJhcl95cG9zID0gMC41LAogICAgICAgICAgICAgICAgICAgY29sb3JiYXJfbGVuID0gMC4zKSAlPiUKICBsYXlvdXQoeGF4aXMgPSBsaXN0KHNob3dncmlkID0gRkFMU0UpLAogICAgICAgICB5YXhpcyA9IGxpc3Qoc2hvd2dyaWQgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgIHNob3d0aWNrbGFiZWxzID0gRkFMU0UpLAogICAgICAgICBmb250ID0gbGlzdChmYW1pbHkgPSAiQXJpYWwiKSkgJT4lCiAgY29sb3JiYXIodGl0bGUgPSAiUmVsYXRpdmUgYWJ1bmRhbmNlIiwKICAgICAgICAgICB0aWNrdmFscyA9IGMoLTEsIDAsIDEpLAogICAgICAgICAgIHRpY2t0ZXh0ID0gYygiMC4xJSIsICIxJSIsICIxMCUiKSkKCiMgRm9ybWF0IHJvdyBzaWRlCnBIZWF0JHgkbGF5b3V0JHhheGlzMiR0aWNrdGV4dCA8LSAiUGh5bHVtIgpwSGVhdCR4JGxheW91dCR4YXhpcyRsaW5lY29sb3IgPC0gIiMwMDAwMDAiCnBIZWF0JHgkbGF5b3V0JHhheGlzMiRsaW5lY29sb3IgPC0gIiMwMDAwMDAiCnBIZWF0JHgkbGF5b3V0JHlheGlzJGxpbmVjb2xvciA8LSAiIzAwMDAwMCIKcEhlYXQkeCRsYXlvdXQkbGVnZW5kJHlhbmNob3IgPC0gImJvdHRvbSIKcEhlYXQKYGBgCioqRmlndXJlIDI6KiogSGVhdCBtYXAgc2hvd2luZyByZWxhdGl2ZSBhYnVuZGFuY2Ugb2YgbWljcm9iZXMgaW4gZWFjaCBzYW1wbGUgKE4gPSAyMzAgdG90YWwgaWRlbnRpZmllZCkuIEVhY2ggcm93IGNvcnJlc3BvbmRzIHRvIGEgdW5pcXVlIG1pY3JvYmUgYW5kIGVhY2ggY29sdW1uIGNvcnJlc3BvbmRzIHRvIGFuIGluZGl2aWR1YWwgc2FtcGxlLiBOb3RlIHRoZSByZWxhdGl2ZSBhYnVuZGFuY2UgY29sb3JzY2FsZSBpcyBpbiBsb2cgdW5pdHMuCgo8YnI+PGJyPgoKPGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij4KIyMjIDEuMyBOb3RhYmxlIG1pY3JvYmUgZGV0ZWN0ZWQKPC9kaXY+CgoqICpEaWFsaXN0ZXIgaG9taW5pcyo6CiAgKiBDb25zdW1lcyBzdWNjaW5hdGUgKFNha2Ftb3RvICpldCBhbCouLCAyMDIwKSwgd2hpY2ggaXMgZWxldmF0ZWQgaW4gcGF0aWVudHMgd2l0aCBvYmVzaXR5IGFuZCB0eXBlIDIgZGlhYmV0ZXM7IHByb3Bvc2VkIGFzIGEgY2FuZGlkYXRlIHByb2Jpb3RpYyBmb3IgcmVndWxhdGluZyBjaXJjdWxhdGluZyBzdWNjaW5hdGUgbGV2ZWxzIChIdWJlci1SdWFubyAqZXQgYWwqLiwgMjAyMikKICAqIENvbXBvc2VzIDIwJSBvZiB0aGUgbWljcm9iaWFsIGNvbW11bml0eSBpbiB0aGUgcHJveGltYWwgQ2FwU2NhbiBzYW1wbGUKICAqIDx1Pk5vdGU6PC91PiAqRGlhbGlzdGVyIG1hc3NpbGllbnNpcyogZm91bmQgYXQgbmVhcmx5IGlkZW50aWNhbCByZWxhdGl2ZSBhYnVuZGFuY2VzLCBidXQgbGl0dGxlIGlzIGN1cnJlbnRseSBrbm93biBhYm91dCB0aGlzIG1pY3JvYmUKPGJyPjxicj4KCjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+CiMjIyAxLjQgUmVmZXJlbmNlcwo8L2Rpdj4KCkh1YmVyLVJ1YW5vLCBJLiwgQ2Fsdm8sIEUuLCBNYXluZXJpcy1QZXJ4YWNocywgSi4sIFJvZHLDrWd1ZXotUGXDsWEsIE0uTS4sIENlcGVydWVsby1NYWxsYWZyw6ksIFYuLCBDZWTDsywgTC4sICpldCBhbCouICgyMDIyKSBPcmFsbHkgYWRtaW5pc3RlcmVkICpPZG9yaWJhY3RlciBsYW5ldXMqIGltcHJvdmVzIGdsdWNvc2UgY29udHJvbCBhbmQgaW5mbGFtbWF0b3J5IHByb2ZpbGUgaW4gb2Jlc2UgbWljZSBieSBkZXBsZXRpbmcgY2lyY3VsYXRpbmcgc3VjY2luYXRlLiAqTWljcm9iaW9tZSogMTA6IDEzNS4KClNha2Ftb3RvLCBNLiwgSWtleWFtYSwgTi4sIFRveW9kYSwgQS4sIE11cmFrYW1pLCBULiwgTW9yaSwgSC4sIElpbm8sIFQuLCBhbmQgT2hrdW1hLCBNLiAoMjAyMCkgKkRpYWxpc3RlciBob21pbmlzKiBzcC4gbm92LiwgaXNvbGF0ZWQgZnJvbSBodW1hbiBmYWVjZXMuICpJbnQgSiBTeXN0IEV2b2wgTWljcm9iaW9sKiA3MDogNTg54oCTNTk1Lg==